HA-MIB DEFINITIONS ::= BEGIN 
IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Integer32, IpAddress
        FROM SNMPv2-SMI
    fibrechannel  FROM Brocade-REG-MIB
        swID, swSsn FROM SW-MIB
    entPhysicalIndex, entPhysicalName FROM ENTITY-MIB
    DisplayString
        FROM SNMPv2-TC;


        haMIB   MODULE-IDENTITY
                LAST-UPDATED "200208160000Z"    -- Aug. 16, 2002
                ORGANIZATION "Brocade Communications Systems, Inc.,"
                CONTACT-INFO "Customer Support Group
                              Brocade Communications Systems,
                              1745 Technology Drive,
                              San Jose, CA 95110 U.S.A
                              Tel: +1-408-392-6061
                              Fax: +1-408-392-6656
                              Email: support@Brocade.COM
                              WEB: www.brocade.com"

                DESCRIPTION
                "The MIB module High Availability MIB.
                Copyright (c) 2002-2003 Brocade Communications Systems, Inc.
                                All rights reserved."


                REVISION "200208160000Z"    -- Aug. 16, 2002
                DESCRIPTION
                "The initial revision for the High Availability MIB."

                REVISION "0402251530Z"    -- Feb 25, 2004 5:30pm
                DESCRIPTION
                "Added mib objects fruSupplierId, fruSupplierPartNum,
         fruSupplierSerialNum and fruSupplierRevCode to fruTable."

                ::= { fibrechannel 2 }

        highAvailability OBJECT IDENTIFIER ::= { haMIB 1 }

        haStatus        OBJECT-TYPE
                        SYNTAX  INTEGER
                                {
                                        redundant (0),
                                        nonredundant (1)
                                }
                        MAX-ACCESS              read-only
                        STATUS  current
                        DESCRIPTION
                        "Whether the system is redundant or not."
                ::= { highAvailability 1 } 

        fruTable        OBJECT-TYPE
                        SYNTAX  SEQUENCE OF FRUEntry
                        MAX-ACCESS      not-accessible
                        STATUS  current
                        DESCRIPTION
                        "This table inventories the field replaceable units (FRUs)
                        slots available. There is entry in this table for each entry
                        in the entPhysicalTable that has entPhysicalClass set to
                        'Container (5)' and has a child entry having entPhysicalIsFRU
                        field to be true"
                ::= {highAvailability 5}

        fRUEntry        OBJECT-TYPE
                        SYNTAX  FRUEntry
                        MAX-ACCESS      not-accessible
                        STATUS  current
                        DESCRIPTION
                        "An entry for FRU slot in the fruTable"
                        INDEX { entPhysicalIndex }
                ::= {fruTable 1}

        FRUEntry ::= SEQUENCE {
                fruClass        INTEGER,
                fruStatus       INTEGER,
                fruObjectNum    Integer32,
                fruSupplierId           DisplayString,
                fruSupplierPartNum          DisplayString,
                fruSupplierSerialNum    DisplayString,
                fruSupplierRevCode          DisplayString
                }

        fruClass        OBJECT-TYPE
                        SYNTAX
                        INTEGER {
                                other(1),
                                unknown(2),
                                chassis (3),
                                cp (4),
                                other-CP(5),  
                                switchblade (6),
                                wwn (7),
                                powerSupply(8),
                                fan(9)
                                }
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "The type of the FRU object that these slot can hold"
                ::= { fRUEntry 1 }

        fruStatus       OBJECT-TYPE
                        SYNTAX INTEGER {
                                other (1),
                                unknown (2),
                                on (3),
                                off (4),
                                faulty (5)
                                }
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                                "The current status of the FRU object in the slot"
                ::= {fRUEntry 2}

        fruObjectNum    OBJECT-TYPE
                        SYNTAX  Integer32
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "Gives the slot number of the blade and unit number for
                        everything else"
                ::= { fRUEntry 3 }
        
        fruSupplierId   OBJECT-TYPE
                        SYNTAX                  DisplayString
                        MAX-ACCESS              read-only
                        STATUS                  current
                        DESCRIPTION             "The supplier id."
                ::= { fRUEntry 4 }

        fruSupplierPartNum      OBJECT-TYPE
                        SYNTAX                  DisplayString
                        MAX-ACCESS              read-only
                        STATUS                  current
                        DESCRIPTION             "The supplier part number."
                ::= { fRUEntry 5 }

        fruSupplierSerialNum    OBJECT-TYPE
                        SYNTAX                  DisplayString(SIZE (0..128))
                        MAX-ACCESS              read-only
                        STATUS                  current
                        DESCRIPTION             "The supplier serial number."
                ::= { fRUEntry 6 }

        fruSupplierRevCode      OBJECT-TYPE
                        SYNTAX                  DisplayString
                        MAX-ACCESS              read-only
                        STATUS                  current
                        DESCRIPTION             "The supplier revision code."
                ::= { fRUEntry 7 }

        fruHistoryTable  OBJECT-TYPE
                        SYNTAX  SEQUENCE OF FruHistoryEntry
                        MAX-ACCESS      not-accessible
                        STATUS  current
                        DESCRIPTION
                        "This table gives the contents of the entire history
                        log of the FRU events"
                ::= {highAvailability 6}

        fruHistoryEntry OBJECT-TYPE
                        SYNTAX  FruHistoryEntry
                        MAX-ACCESS      not-accessible
                        STATUS  current
                        DESCRIPTION
                        "An entry in this table represents a particular FRU event"
                        INDEX { fruHistoryIndex }
                ::= {fruHistoryTable 1}

        FruHistoryEntry ::= SEQUENCE {
                fruHistoryIndex         Integer32,
                fruHistoryClass         INTEGER,
                fruHistoryObjectNum     Integer32,
                fruHistoryEvent         INTEGER,
                fruHistoryTime          DisplayString,
                fruHistoryFactoryPartNum DisplayString,
                fruHistoryFactorySerialNum DisplayString
                }

        fruHistoryIndex  OBJECT-TYPE
                        SYNTAX  Integer32
                        MAX-ACCESS read-only
                        STATUS  current
                        DESCRIPTION 
                        "Index of the FRU event in the history table"
                ::= {fruHistoryEntry 1}
        

        fruHistoryClass OBJECT-TYPE
                        SYNTAX
                        INTEGER {
                                other(1),
                                unknown(2),
                                chassis (3),
                                cp (4),
                                other-CP(5),  
                                switchblade (6),
                                wwn (7),
                                powerSupply(8),
                                fan(9)
                                }
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "The type of the FRU object related to the event"
                ::= { fruHistoryEntry 2 }



        fruHistoryObjectNum OBJECT-TYPE
                        SYNTAX  Integer32
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "Gives the slot number of the blade and unit number for
                        everything else"
                ::= { fruHistoryEntry 3 }
        
        fruHistoryEvent OBJECT-TYPE
                        SYNTAX
                        INTEGER {
                                added (1),
                                removed (2),
                                invalid (3)
                                }
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "The type of the FRU event"
                ::= { fruHistoryEntry 4}

        fruHistoryTime  OBJECT-TYPE
                        SYNTAX  DisplayString
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "Gives the time at which this event happened"
                ::= { fruHistoryEntry 5 }

        fruHistoryFactoryPartNum        OBJECT-TYPE
                        SYNTAX  DisplayString
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "Gives the factory part num of the FRU object"
                ::= { fruHistoryEntry 6 }

fruHistoryFactorySerialNum      OBJECT-TYPE
                        SYNTAX  DisplayString
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "Gives the factory serial num of the FRU object"
                ::= { fruHistoryEntry 7 }

        cpTable         OBJECT-TYPE
                        SYNTAX  SEQUENCE OF CPEntry
                        MAX-ACCESS      not-accessible
                        STATUS  current
                        DESCRIPTION
                        "This table lists all the CPs in the system"
                ::= {highAvailability 7}

        cpEntry         OBJECT-TYPE
                        SYNTAX  CPEntry
                        MAX-ACCESS      not-accessible
                        STATUS  current
                        DESCRIPTION
                        "An entry represents a single CP in the system"
                        INDEX { entPhysicalIndex }
                ::= {cpTable 1}

        CPEntry ::= SEQUENCE {
                        cpStatus        INTEGER,
                        cpIpAddress     IpAddress,
                        cpIpMask        IpAddress,
                        cpIpGateway     IpAddress,
                        cpLastEvent     INTEGER
                        }

        cpStatus        OBJECT-TYPE
                        SYNTAX  INTEGER {
                                other (1),
                                unknown (2),
                                active (3),
                                standby (4),  -- Ready to takeover
                                failed (5)  -- Not ready to takeover
                                }
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "Gives the current status of the CP"
                ::= { cpEntry 1 }

        cpIpAddress     OBJECT-TYPE
                        SYNTAX  IpAddress
                        MAX-ACCESS read-only
                        STATUS  current
                        DESCRIPTION
                        "The IP Address of the Ethernet interface of this CP."
                ::= { cpEntry 2 }

        cpIpMask        OBJECT-TYPE
                        SYNTAX IpAddress
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "The IP Mask of the Ethernet interface of this CP."
                ::= { cpEntry 3 }

        cpIpGateway     OBJECT-TYPE
                        SYNTAX  IpAddress
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "The IP Address of the IP Gateway for this CP."
                ::= { cpEntry 4 }

        cpLastEvent     OBJECT-TYPE
                        SYNTAX INTEGER {
                                other (1),
                                unknown (2),
                                haSync (3),
                                haOutSync (4),
                                cpFaulty (5),
                                cpHealthy (6),
                                cpActive (7),
                                configChange (8),
                                failOverStart (9),
                                failOverDone (10),
                                firmwareCommit (11),
                                firmwareUpgrade (12)
                                }
                        MAX-ACCESS      read-only
                        STATUS  current
                        DESCRIPTION
                        "The last event related to this CP"
                ::= { cpEntry 5 }

        haMIBTraps      OBJECT IDENTIFIER ::= { haMIB 2 }
        haMIBTrapPrefix OBJECT IDENTIFIER ::= { haMIBTraps 0 }

        fruStatusChanged NOTIFICATION-TYPE
                        OBJECTS { entPhysicalName, fruStatus}
                        STATUS  current
                        DESCRIPTION
                        "This trap is sent when status of any FRU object is changed"
                ::= { haMIBTrapPrefix 1 }

        cpStatusChanged NOTIFICATION-TYPE
                        OBJECTS { cpStatus, cpLastEvent, swID, swSsn} 
                        STATUS  current
                        DESCRIPTION
                        "This trap is sent when status of any CP object is changed"
                ::= { haMIBTrapPrefix 2 }

        fruHistoryTrap NOTIFICATION-TYPE
                       OBJECTS { fruHistoryClass, fruHistoryObjectNum,
                       fruHistoryEvent, fruHistoryTime, fruHistoryFactoryPartNum,
                        fruHistoryFactorySerialNum }
                        STATUS current
                        DESCRIPTION
                        "This trap is sent when a FRU is added or removed"
                ::= { haMIBTrapPrefix 3 }
END